home *** CD-ROM | disk | FTP | other *** search
/ infoROM 17,000 Product Descriptions for Business / infoROM Product Descriptions for Business - ESX Interactive.ISO / argdemos / nexsys / defer.atl < prev    next >
Encoding:
Text File  |  1993-06-21  |  1.2 KB  |  65 lines

  1. \
  2. \  DEFER.ATL
  3. \
  4. \  Copyright (C) 1993 by Derrick Oswald
  5. \
  6. \  Derrick Oswald
  7. \  Nexsys Consulting Inc.
  8. \  44 Douglas Drive
  9. \  Ayr, Ontario
  10. \  N0B 1E0
  11. \  (519) 632-8243
  12. \  (519) 632-8244 FAX
  13. \
  14. \  Description:
  15. \       defered words definitions
  16. \
  17. \       useage:
  18. \         defer myvariable
  19. \         ...
  20. \         : definition ... ;
  21. \         ...
  22. \         ptr definition is myvariable
  23. \         ...
  24. \         myvariable
  25.  
  26. .( "\nLoading defered definitions..."
  27.  
  28. \ warning - default behavior of deferred words
  29. : warning ( -> )
  30.   ." "\nUninitialised deferred word"
  31. ;
  32.  
  33. \ defer - deferred execution defining word
  34. : defer ( -> )
  35.   create
  36.     ['] warning ,
  37.   does>
  38.     @ execute
  39. ;
  40.  
  41. \ pointer - definition address fetcher
  42. : pointer ( -> cfa )
  43.   ' \ get the next word in the compilation stream
  44.   \ this should be
  45.   \   [compile] literal
  46.   \ but atlas complains if compiler words are used outside a : definition
  47.   state @ if
  48.     compile (lit) ,
  49.   then
  50. ; immediate
  51.   
  52. \ is - deferred word redefiner
  53. : is ( cfa -> )
  54.   ' \ get the next word in the compilation stream
  55.   >body
  56.   state @ if
  57.     compile (lit) ,
  58.     compile !
  59.   else
  60.     !
  61.   then
  62. ; immediate
  63.  
  64. .( "\nLoaded.\n"
  65.